From: Marco Trevisan (TreviƱo) Date: Tue, 14 May 2019 02:03:51 +0000 (+0200) Subject: messageTray: Dispose Source on destruction X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~530 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=4e1492c92692333fd107cf194bbeb24f09fe89f0;p=gnome-shell.git messageTray: Dispose Source on destruction Dispose the Source Object when dispose() is called, avoiding that it could be called twice on a destroyed Source. So, notify count changes before destroying the object, and don't emit this twice on destroyNonResidentNotifications (as if a notification is destroyed the property notify will happen in the notification destroy callback anyways). https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/559 --- diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index fda7f5bec..0d8e884c6 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -834,10 +834,10 @@ var Source = GObject.registerClass({ return; this.notifications.splice(index, 1); + this.countUpdated(); + if (this.notifications.length == 0) this.destroy(); - - this.countUpdated(); } pushNotification(notification) { @@ -891,6 +891,8 @@ var Source = GObject.registerClass({ notifications[i].destroy(reason); this.emit('destroy', reason); + + this.run_dispose(); } iconUpdated() { @@ -905,8 +907,6 @@ var Source = GObject.registerClass({ for (let i = this.notifications.length - 1; i >= 0; i--) if (!this.notifications[i].resident) this.notifications[i].destroy(); - - this.countUpdated(); } });